home *** CD-ROM | disk | FTP | other *** search
/ The PC-SIG Library 10 / The PC-Sig Library - Shareware for the IBM PC and Compatibles (PC-SIG)(Tenth Edition Disks 1-2804)(1991).iso / PC_SIGCD / 20 / 5 / DISK2058.ZIP / UNFAST.EXE / KEYS.FI < prev    next >
Text File  |  1980-01-01  |  1KB  |  59 lines

  1. ;KEYS
  2. #short
  3. const key_port=60h
  4. key_table ? 128
  5.  
  6. proc set_keys
  7.     {
  8.     fill 64 from key_table with 0
  9.     dos 35(9)
  10.     poke i9ks,reg es:poke i9ko,reg bx
  11.     reg dx=newkeys:dos 25(9)
  12.     }
  13.  
  14. proc reset_keys
  15.     {
  16.     reg dx=peek i9ko,ds=peek i9ks:dos 25(9)
  17.     reg ds=reg cs
  18.     }
  19.  
  20. proc i9_dont_do_this
  21.     {
  22.     newkeys:
  23.     pushall
  24.     reg ds=reg cs
  25.  
  26.     kscan=in key_port
  27.     i9ad=key_table+(kscan and 127)
  28.     if kscan and 128 then
  29.     {
  30.     if peekb i9ad=1 then pokeb i9ad,255 else pokeb i9ad,0
  31.     }
  32.     else
  33.     {
  34.     if (peekb i9ad=0) or (peekb i9ad=255) then pokeb i9ad,1
  35.     }
  36.  
  37.     popall
  38.     inline 0eah
  39.     i9ko:
  40.     data 0
  41.     i9ks:
  42.     data 0
  43.     }
  44.  
  45. function key_press(ksp)
  46.     {
  47.     i9k=key
  48.     ka=key_table+ksp
  49.     if peekb ka=1 then
  50.     {
  51.     if key_repeat<>1 then pokeb ka,25
  52.     return 1 ;First time read.
  53.     }
  54.    ;if peekb ka=255 then pokeb ka,0:return 1 ;First time read, but now depressed.
  55.     if peekb ka=2 then pokeb ka,key_repeat:return 1 ;2nd+ time read.
  56.     if peekb ka<100 then pokeb ka,peekb ka-1 ;Decrement count.
  57.     return 0
  58.     }
  59.